在 Composition API
當中我們可以將響應式資料和相關業務邏輯結合到一起,是因為 Vue3 的 setup
方法
setup
是 Vue3 使用 Composition API
的統一入口
beforecate
和 created
被 setup
方法本身給取代this
來取得 Vue 實體的東西,但是在 setup
, 我們不使用 this
除了上面提到的 beforecate
和 created
被取代掉了,其它的生命週期鉤子,可以透過前面加上 "on
" 來使用,如下
在 Vue3 中,我們會將生命週期鉤子在 setup
裡面來使用,如下
import {createApp,onMounted} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup(){
onMounted(()=>{
})
}
}).mount('#app');
computed
寫法,會是透過直接宣告一個變數來使用 computed
而不是全部包在 computed
中,就會像是下面這樣的寫法
import {createApp,computed} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup(){
const 變數 = computed(()=>{
return ...
})
}
}).mount('#app');
先以 Options API
的方式來說明
import {createApp,computed,ref,watch,onMounted} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
data(){
return {
text: 'hello'
}
},
mounted(){
console.log(this)
}
}).mount('#app')
Proxy 結構是 Vue 用來做雙向綁定的機制
,在 Options API
時可能不是那麼重要,不過 Composition API
滿重要的,所以需要了解一下
可以看到我們在 Options API
data
裡定義的變數存放在 [Target]
內
Options API 演示範例
接著我們以 Composition API
的方式來看一下
import {createApp} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup() {
const text = "Composition API"
console.log(text)
return {
text
}
}
}).mount('#app')
可以看到 console
出來的是個純字串,非 Proxy
物件,還記得上面說到~ Proxy
是 Vue 用來實踐 雙向綁定機制的重要關鍵
所以這樣的寫法會造成 Vue 的雙向綁定機制不見了 !!!~
<div id="app">
{{ text }}
<input type="text" name="" v-model="text">
</div>
import {createApp} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup() {
const text = "Composition API"
console.log(text)
return {
text
}
}
}).mount('#app')
下一篇就來介紹 該怎麼寫 data
的資料,找回雙向綁定機制 !!!
六角學院 | Vue 3 Composition API 精髓掌握 | Youtube Vue3 新手夏令營活動
六角學院 | Composition API 共筆文件
Vue3 官方文件
segmentfault , Vue 3 生命周期完整指南
CSDn , Vue3.0的setup执行时机和注意点
IT人 lliiooiill, 簡單梳理下 Vue3 的新特性